//
//  WJSatus.swift
//  新浪微博swift
//
//  Created by WJ-Jason on 2017/5/3.
//  Copyright © 2017年 WJ-Jason. All rights reserved.
//

import UIKit
import YYModel

// 微博数据模型
class WJSatus: NSObject {

    // Int类型, 在64位的机器是64位 在32位的机器就是32
    // 如果不写Int64 则在iPad2/iphone 5/c/4s/4都无法正常运行
    // 基本数据类型Foundation框架中的属性需要设置初始值
    var id: Int64 = 0
    /// 微博信息内容
    var text : String?
    
    /// 微博创建时间字符串
    var created_at : String?
    
    /// 微博来源 - 发布微博使用的客户端
    var source: String? {
        didSet {
            // 重新计算来源并且保存
            // 在 didSet 中，给 source 再次设置值，不会调用 didSet
            source = "来自于 " + (source?.cz_href()?.text ?? "")
        }
    }
    
    /// 转发数
    var reposts_count : Int = 0
    /// 评论数
    var comments_count : Int = 0
    /// 点赞数
    var attitudes_count : Int = 0
    
    /// 微博的用户 - 注意和服务器返回的 KEY 要一致
    var user: WJUser?
    
    /// 被转发的原创微博
    var retweeted_status: WJSatus?
    
    /// 微博配图模型数组
    var pic_urls : [WJStatusPicture]?
    
    // 重写 description 的计算型属性
    override var description: String {
        return yy_modelDescription()
    }
    
    /// 类函数 -> 告诉第三方框架 YY_Model 如果遇到数组类型的属性，数组中存放的对象是什么类？
    /// NSArray 中保存对象的类型通常是 `id` 类型
    /// OC 中的泛型是 Swift 推出后，苹果为了兼容给 OC 增加的
    /// 从运行时角度，仍然不知道数组中应该存放什么类型的对象
    class func modelContainerPropertyGenericClass() -> [String : AnyClass] {
        return ["pic_urls" : WJStatusPicture.classForCoder()]
    }
}
